{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "tender-alfred",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Python 3.6.8\n"
     ]
    }
   ],
   "source": [
    "!python --version"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "elect-shower",
   "metadata": {},
   "outputs": [],
   "source": [
    "!l:"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "continuous-officer",
   "metadata": {},
   "source": [
    "## 进入虚拟环境"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "sized-copper",
   "metadata": {},
   "outputs": [],
   "source": [
    "!cd l:confusion_test/venv/Scripts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "presidential-arctic",
   "metadata": {},
   "outputs": [],
   "source": [
    "!activate"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "valid-territory",
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "colored-effectiveness",
   "metadata": {},
   "source": [
    "### 前言\n",
    "> **1、KNN算法**\n",
    "\n",
    "> **2、回归**\n",
    "\n",
    "> **3、Loss函数**\n",
    "\n",
    "> **4、梯度下降**\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "impressive-assumption",
   "metadata": {},
   "source": [
    "## 1、数据加载与数据分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "buried-meter",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.datasets import load_boston"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "existing-session",
   "metadata": {},
   "outputs": [],
   "source": [
    "dataset = load_boston()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "miniature-strap",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "sklearn.utils.Bunch"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(dataset)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "digital-station",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['DESCR', 'data', 'feature_names', 'filename', 'target']"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dir(dataset)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "efficient-andrews",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      ".. _boston_dataset:\n",
      "\n",
      "Boston house prices dataset\n",
      "---------------------------\n",
      "\n",
      "**Data Set Characteristics:**  \n",
      "\n",
      "    :Number of Instances: 506 \n",
      "\n",
      "    :Number of Attributes: 13 numeric/categorical predictive. Median Value (attribute 14) is usually the target.\n",
      "\n",
      "    :Attribute Information (in order):\n",
      "        - CRIM     per capita crime rate by town\n",
      "        - ZN       proportion of residential land zoned for lots over 25,000 sq.ft.\n",
      "        - INDUS    proportion of non-retail business acres per town\n",
      "        - CHAS     Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)\n",
      "        - NOX      nitric oxides concentration (parts per 10 million)\n",
      "        - RM       average number of rooms per dwelling\n",
      "        - AGE      proportion of owner-occupied units built prior to 1940\n",
      "        - DIS      weighted distances to five Boston employment centres\n",
      "        - RAD      index of accessibility to radial highways\n",
      "        - TAX      full-value property-tax rate per $10,000\n",
      "        - PTRATIO  pupil-teacher ratio by town\n",
      "        - B        1000(Bk - 0.63)^2 where Bk is the proportion of blacks by town\n",
      "        - LSTAT    % lower status of the population\n",
      "        - MEDV     Median value of owner-occupied homes in $1000's\n",
      "\n",
      "    :Missing Attribute Values: None\n",
      "\n",
      "    :Creator: Harrison, D. and Rubinfeld, D.L.\n",
      "\n",
      "This is a copy of UCI ML housing dataset.\n",
      "https://archive.ics.uci.edu/ml/machine-learning-databases/housing/\n",
      "\n",
      "\n",
      "This dataset was taken from the StatLib library which is maintained at Carnegie Mellon University.\n",
      "\n",
      "The Boston house-price data of Harrison, D. and Rubinfeld, D.L. 'Hedonic\n",
      "prices and the demand for clean air', J. Environ. Economics & Management,\n",
      "vol.5, 81-102, 1978.   Used in Belsley, Kuh & Welsch, 'Regression diagnostics\n",
      "...', Wiley, 1980.   N.B. Various transformations are used in the table on\n",
      "pages 244-261 of the latter.\n",
      "\n",
      "The Boston house-price data has been used in many machine learning papers that address regression\n",
      "problems.   \n",
      "     \n",
      ".. topic:: References\n",
      "\n",
      "   - Belsley, Kuh & Welsch, 'Regression diagnostics: Identifying Influential Data and Sources of Collinearity', Wiley, 1980. 244-261.\n",
      "   - Quinlan,R. (1993). Combining Instance-Based and Model-Based Learning. In Proceedings on the Tenth International Conference of Machine Learning, 236-243, University of Massachusetts, Amherst. Morgan Kaufmann.\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(dataset[\"DESCR\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "essential-ontario",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD',\n",
       "       'TAX', 'PTRATIO', 'B', 'LSTAT'], dtype='<U7')"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dataset[\"feature_names\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "greatest-variation",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([6.575, 6.421, 7.185, 6.998, 7.147, 6.43 , 6.012, 6.172, 5.631,\n",
       "       6.004, 6.377, 6.009, 5.889, 5.949, 6.096, 5.834, 5.935, 5.99 ,\n",
       "       5.456, 5.727, 5.57 , 5.965, 6.142, 5.813, 5.924, 5.599, 5.813,\n",
       "       6.047, 6.495, 6.674, 5.713, 6.072, 5.95 , 5.701, 6.096, 5.933,\n",
       "       5.841, 5.85 , 5.966, 6.595, 7.024, 6.77 , 6.169, 6.211, 6.069,\n",
       "       5.682, 5.786, 6.03 , 5.399, 5.602, 5.963, 6.115, 6.511, 5.998,\n",
       "       5.888, 7.249, 6.383, 6.816, 6.145, 5.927, 5.741, 5.966, 6.456,\n",
       "       6.762, 7.104, 6.29 , 5.787, 5.878, 5.594, 5.885, 6.417, 5.961,\n",
       "       6.065, 6.245, 6.273, 6.286, 6.279, 6.14 , 6.232, 5.874, 6.727,\n",
       "       6.619, 6.302, 6.167, 6.389, 6.63 , 6.015, 6.121, 7.007, 7.079,\n",
       "       6.417, 6.405, 6.442, 6.211, 6.249, 6.625, 6.163, 8.069, 7.82 ,\n",
       "       7.416, 6.727, 6.781, 6.405, 6.137, 6.167, 5.851, 5.836, 6.127,\n",
       "       6.474, 6.229, 6.195, 6.715, 5.913, 6.092, 6.254, 5.928, 6.176,\n",
       "       6.021, 5.872, 5.731, 5.87 , 6.004, 5.961, 5.856, 5.879, 5.986,\n",
       "       5.613, 5.693, 6.431, 5.637, 6.458, 6.326, 6.372, 5.822, 5.757,\n",
       "       6.335, 5.942, 6.454, 5.857, 6.151, 6.174, 5.019, 5.403, 5.468,\n",
       "       4.903, 6.13 , 5.628, 4.926, 5.186, 5.597, 6.122, 5.404, 5.012,\n",
       "       5.709, 6.129, 6.152, 5.272, 6.943, 6.066, 6.51 , 6.25 , 7.489,\n",
       "       7.802, 8.375, 5.854, 6.101, 7.929, 5.877, 6.319, 6.402, 5.875,\n",
       "       5.88 , 5.572, 6.416, 5.859, 6.546, 6.02 , 6.315, 6.86 , 6.98 ,\n",
       "       7.765, 6.144, 7.155, 6.563, 5.604, 6.153, 7.831, 6.782, 6.556,\n",
       "       7.185, 6.951, 6.739, 7.178, 6.8  , 6.604, 7.875, 7.287, 7.107,\n",
       "       7.274, 6.975, 7.135, 6.162, 7.61 , 7.853, 8.034, 5.891, 6.326,\n",
       "       5.783, 6.064, 5.344, 5.96 , 5.404, 5.807, 6.375, 5.412, 6.182,\n",
       "       5.888, 6.642, 5.951, 6.373, 6.951, 6.164, 6.879, 6.618, 8.266,\n",
       "       8.725, 8.04 , 7.163, 7.686, 6.552, 5.981, 7.412, 8.337, 8.247,\n",
       "       6.726, 6.086, 6.631, 7.358, 6.481, 6.606, 6.897, 6.095, 6.358,\n",
       "       6.393, 5.593, 5.605, 6.108, 6.226, 6.433, 6.718, 6.487, 6.438,\n",
       "       6.957, 8.259, 6.108, 5.876, 7.454, 8.704, 7.333, 6.842, 7.203,\n",
       "       7.52 , 8.398, 7.327, 7.206, 5.56 , 7.014, 8.297, 7.47 , 5.92 ,\n",
       "       5.856, 6.24 , 6.538, 7.691, 6.758, 6.854, 7.267, 6.826, 6.482,\n",
       "       6.812, 7.82 , 6.968, 7.645, 7.923, 7.088, 6.453, 6.23 , 6.209,\n",
       "       6.315, 6.565, 6.861, 7.148, 6.63 , 6.127, 6.009, 6.678, 6.549,\n",
       "       5.79 , 6.345, 7.041, 6.871, 6.59 , 6.495, 6.982, 7.236, 6.616,\n",
       "       7.42 , 6.849, 6.635, 5.972, 4.973, 6.122, 6.023, 6.266, 6.567,\n",
       "       5.705, 5.914, 5.782, 6.382, 6.113, 6.426, 6.376, 6.041, 5.708,\n",
       "       6.415, 6.431, 6.312, 6.083, 5.868, 6.333, 6.144, 5.706, 6.031,\n",
       "       6.316, 6.31 , 6.037, 5.869, 5.895, 6.059, 5.985, 5.968, 7.241,\n",
       "       6.54 , 6.696, 6.874, 6.014, 5.898, 6.516, 6.635, 6.939, 6.49 ,\n",
       "       6.579, 5.884, 6.728, 5.663, 5.936, 6.212, 6.395, 6.127, 6.112,\n",
       "       6.398, 6.251, 5.362, 5.803, 8.78 , 3.561, 4.963, 3.863, 4.97 ,\n",
       "       6.683, 7.016, 6.216, 5.875, 4.906, 4.138, 7.313, 6.649, 6.794,\n",
       "       6.38 , 6.223, 6.968, 6.545, 5.536, 5.52 , 4.368, 5.277, 4.652,\n",
       "       5.   , 4.88 , 5.39 , 5.713, 6.051, 5.036, 6.193, 5.887, 6.471,\n",
       "       6.405, 5.747, 5.453, 5.852, 5.987, 6.343, 6.404, 5.349, 5.531,\n",
       "       5.683, 4.138, 5.608, 5.617, 6.852, 5.757, 6.657, 4.628, 5.155,\n",
       "       4.519, 6.434, 6.782, 5.304, 5.957, 6.824, 6.411, 6.006, 5.648,\n",
       "       6.103, 5.565, 5.896, 5.837, 6.202, 6.193, 6.38 , 6.348, 6.833,\n",
       "       6.425, 6.436, 6.208, 6.629, 6.461, 6.152, 5.935, 5.627, 5.818,\n",
       "       6.406, 6.219, 6.485, 5.854, 6.459, 6.341, 6.251, 6.185, 6.417,\n",
       "       6.749, 6.655, 6.297, 7.393, 6.728, 6.525, 5.976, 5.936, 6.301,\n",
       "       6.081, 6.701, 6.376, 6.317, 6.513, 6.209, 5.759, 5.952, 6.003,\n",
       "       5.926, 5.713, 6.167, 6.229, 6.437, 6.98 , 5.427, 6.162, 6.484,\n",
       "       5.304, 6.185, 6.229, 6.242, 6.75 , 7.061, 5.762, 5.871, 6.312,\n",
       "       6.114, 5.905, 5.454, 5.414, 5.093, 5.983, 5.983, 5.707, 5.926,\n",
       "       5.67 , 5.39 , 5.794, 6.019, 5.569, 6.027, 6.593, 6.12 , 6.976,\n",
       "       6.794, 6.03 ])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dataset[\"data\"][:, 5]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "flying-stations",
   "metadata": {},
   "source": [
    "## 2、波士顿房价预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "failing-generation",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "single-aquarium",
   "metadata": {},
   "outputs": [],
   "source": [
    "dataframe = pd.DataFrame(dataset[\"data\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "terminal-repository",
   "metadata": {},
   "outputs": [],
   "source": [
    "dataframe.columns = dataset[\"feature_names\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "polish-garbage",
   "metadata": {},
   "outputs": [],
   "source": [
    "dataframe[\"price\"] = dataset[\"target\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "democratic-receipt",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>CRIM</th>\n",
       "      <th>ZN</th>\n",
       "      <th>INDUS</th>\n",
       "      <th>CHAS</th>\n",
       "      <th>NOX</th>\n",
       "      <th>RM</th>\n",
       "      <th>AGE</th>\n",
       "      <th>DIS</th>\n",
       "      <th>RAD</th>\n",
       "      <th>TAX</th>\n",
       "      <th>PTRATIO</th>\n",
       "      <th>B</th>\n",
       "      <th>LSTAT</th>\n",
       "      <th>price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.00632</td>\n",
       "      <td>18.0</td>\n",
       "      <td>2.31</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.538</td>\n",
       "      <td>6.575</td>\n",
       "      <td>65.2</td>\n",
       "      <td>4.0900</td>\n",
       "      <td>1.0</td>\n",
       "      <td>296.0</td>\n",
       "      <td>15.3</td>\n",
       "      <td>396.90</td>\n",
       "      <td>4.98</td>\n",
       "      <td>24.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.02731</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.07</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.469</td>\n",
       "      <td>6.421</td>\n",
       "      <td>78.9</td>\n",
       "      <td>4.9671</td>\n",
       "      <td>2.0</td>\n",
       "      <td>242.0</td>\n",
       "      <td>17.8</td>\n",
       "      <td>396.90</td>\n",
       "      <td>9.14</td>\n",
       "      <td>21.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.02729</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.07</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.469</td>\n",
       "      <td>7.185</td>\n",
       "      <td>61.1</td>\n",
       "      <td>4.9671</td>\n",
       "      <td>2.0</td>\n",
       "      <td>242.0</td>\n",
       "      <td>17.8</td>\n",
       "      <td>392.83</td>\n",
       "      <td>4.03</td>\n",
       "      <td>34.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.03237</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.18</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.458</td>\n",
       "      <td>6.998</td>\n",
       "      <td>45.8</td>\n",
       "      <td>6.0622</td>\n",
       "      <td>3.0</td>\n",
       "      <td>222.0</td>\n",
       "      <td>18.7</td>\n",
       "      <td>394.63</td>\n",
       "      <td>2.94</td>\n",
       "      <td>33.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.06905</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.18</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.458</td>\n",
       "      <td>7.147</td>\n",
       "      <td>54.2</td>\n",
       "      <td>6.0622</td>\n",
       "      <td>3.0</td>\n",
       "      <td>222.0</td>\n",
       "      <td>18.7</td>\n",
       "      <td>396.90</td>\n",
       "      <td>5.33</td>\n",
       "      <td>36.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>501</th>\n",
       "      <td>0.06263</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11.93</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.573</td>\n",
       "      <td>6.593</td>\n",
       "      <td>69.1</td>\n",
       "      <td>2.4786</td>\n",
       "      <td>1.0</td>\n",
       "      <td>273.0</td>\n",
       "      <td>21.0</td>\n",
       "      <td>391.99</td>\n",
       "      <td>9.67</td>\n",
       "      <td>22.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>502</th>\n",
       "      <td>0.04527</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11.93</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.573</td>\n",
       "      <td>6.120</td>\n",
       "      <td>76.7</td>\n",
       "      <td>2.2875</td>\n",
       "      <td>1.0</td>\n",
       "      <td>273.0</td>\n",
       "      <td>21.0</td>\n",
       "      <td>396.90</td>\n",
       "      <td>9.08</td>\n",
       "      <td>20.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>503</th>\n",
       "      <td>0.06076</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11.93</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.573</td>\n",
       "      <td>6.976</td>\n",
       "      <td>91.0</td>\n",
       "      <td>2.1675</td>\n",
       "      <td>1.0</td>\n",
       "      <td>273.0</td>\n",
       "      <td>21.0</td>\n",
       "      <td>396.90</td>\n",
       "      <td>5.64</td>\n",
       "      <td>23.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>504</th>\n",
       "      <td>0.10959</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11.93</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.573</td>\n",
       "      <td>6.794</td>\n",
       "      <td>89.3</td>\n",
       "      <td>2.3889</td>\n",
       "      <td>1.0</td>\n",
       "      <td>273.0</td>\n",
       "      <td>21.0</td>\n",
       "      <td>393.45</td>\n",
       "      <td>6.48</td>\n",
       "      <td>22.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>505</th>\n",
       "      <td>0.04741</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11.93</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.573</td>\n",
       "      <td>6.030</td>\n",
       "      <td>80.8</td>\n",
       "      <td>2.5050</td>\n",
       "      <td>1.0</td>\n",
       "      <td>273.0</td>\n",
       "      <td>21.0</td>\n",
       "      <td>396.90</td>\n",
       "      <td>7.88</td>\n",
       "      <td>11.9</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>506 rows × 14 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        CRIM    ZN  INDUS  CHAS    NOX     RM   AGE     DIS  RAD    TAX  \\\n",
       "0    0.00632  18.0   2.31   0.0  0.538  6.575  65.2  4.0900  1.0  296.0   \n",
       "1    0.02731   0.0   7.07   0.0  0.469  6.421  78.9  4.9671  2.0  242.0   \n",
       "2    0.02729   0.0   7.07   0.0  0.469  7.185  61.1  4.9671  2.0  242.0   \n",
       "3    0.03237   0.0   2.18   0.0  0.458  6.998  45.8  6.0622  3.0  222.0   \n",
       "4    0.06905   0.0   2.18   0.0  0.458  7.147  54.2  6.0622  3.0  222.0   \n",
       "..       ...   ...    ...   ...    ...    ...   ...     ...  ...    ...   \n",
       "501  0.06263   0.0  11.93   0.0  0.573  6.593  69.1  2.4786  1.0  273.0   \n",
       "502  0.04527   0.0  11.93   0.0  0.573  6.120  76.7  2.2875  1.0  273.0   \n",
       "503  0.06076   0.0  11.93   0.0  0.573  6.976  91.0  2.1675  1.0  273.0   \n",
       "504  0.10959   0.0  11.93   0.0  0.573  6.794  89.3  2.3889  1.0  273.0   \n",
       "505  0.04741   0.0  11.93   0.0  0.573  6.030  80.8  2.5050  1.0  273.0   \n",
       "\n",
       "     PTRATIO       B  LSTAT  price  \n",
       "0       15.3  396.90   4.98   24.0  \n",
       "1       17.8  396.90   9.14   21.6  \n",
       "2       17.8  392.83   4.03   34.7  \n",
       "3       18.7  394.63   2.94   33.4  \n",
       "4       18.7  396.90   5.33   36.2  \n",
       "..       ...     ...    ...    ...  \n",
       "501     21.0  391.99   9.67   22.4  \n",
       "502     21.0  396.90   9.08   20.6  \n",
       "503     21.0  396.90   5.64   23.9  \n",
       "504     21.0  393.45   6.48   22.0  \n",
       "505     21.0  396.90   7.88   11.9  \n",
       "\n",
       "[506 rows x 14 columns]"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dataframe"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "limited-gathering",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>CRIM</th>\n",
       "      <th>ZN</th>\n",
       "      <th>INDUS</th>\n",
       "      <th>CHAS</th>\n",
       "      <th>NOX</th>\n",
       "      <th>RM</th>\n",
       "      <th>AGE</th>\n",
       "      <th>DIS</th>\n",
       "      <th>RAD</th>\n",
       "      <th>TAX</th>\n",
       "      <th>PTRATIO</th>\n",
       "      <th>B</th>\n",
       "      <th>LSTAT</th>\n",
       "      <th>price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>CRIM</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.200469</td>\n",
       "      <td>0.406583</td>\n",
       "      <td>-0.055892</td>\n",
       "      <td>0.420972</td>\n",
       "      <td>-0.219247</td>\n",
       "      <td>0.352734</td>\n",
       "      <td>-0.379670</td>\n",
       "      <td>0.625505</td>\n",
       "      <td>0.582764</td>\n",
       "      <td>0.289946</td>\n",
       "      <td>-0.385064</td>\n",
       "      <td>0.455621</td>\n",
       "      <td>-0.388305</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ZN</th>\n",
       "      <td>-0.200469</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.533828</td>\n",
       "      <td>-0.042697</td>\n",
       "      <td>-0.516604</td>\n",
       "      <td>0.311991</td>\n",
       "      <td>-0.569537</td>\n",
       "      <td>0.664408</td>\n",
       "      <td>-0.311948</td>\n",
       "      <td>-0.314563</td>\n",
       "      <td>-0.391679</td>\n",
       "      <td>0.175520</td>\n",
       "      <td>-0.412995</td>\n",
       "      <td>0.360445</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>INDUS</th>\n",
       "      <td>0.406583</td>\n",
       "      <td>-0.533828</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.062938</td>\n",
       "      <td>0.763651</td>\n",
       "      <td>-0.391676</td>\n",
       "      <td>0.644779</td>\n",
       "      <td>-0.708027</td>\n",
       "      <td>0.595129</td>\n",
       "      <td>0.720760</td>\n",
       "      <td>0.383248</td>\n",
       "      <td>-0.356977</td>\n",
       "      <td>0.603800</td>\n",
       "      <td>-0.483725</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CHAS</th>\n",
       "      <td>-0.055892</td>\n",
       "      <td>-0.042697</td>\n",
       "      <td>0.062938</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.091203</td>\n",
       "      <td>0.091251</td>\n",
       "      <td>0.086518</td>\n",
       "      <td>-0.099176</td>\n",
       "      <td>-0.007368</td>\n",
       "      <td>-0.035587</td>\n",
       "      <td>-0.121515</td>\n",
       "      <td>0.048788</td>\n",
       "      <td>-0.053929</td>\n",
       "      <td>0.175260</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>NOX</th>\n",
       "      <td>0.420972</td>\n",
       "      <td>-0.516604</td>\n",
       "      <td>0.763651</td>\n",
       "      <td>0.091203</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.302188</td>\n",
       "      <td>0.731470</td>\n",
       "      <td>-0.769230</td>\n",
       "      <td>0.611441</td>\n",
       "      <td>0.668023</td>\n",
       "      <td>0.188933</td>\n",
       "      <td>-0.380051</td>\n",
       "      <td>0.590879</td>\n",
       "      <td>-0.427321</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RM</th>\n",
       "      <td>-0.219247</td>\n",
       "      <td>0.311991</td>\n",
       "      <td>-0.391676</td>\n",
       "      <td>0.091251</td>\n",
       "      <td>-0.302188</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.240265</td>\n",
       "      <td>0.205246</td>\n",
       "      <td>-0.209847</td>\n",
       "      <td>-0.292048</td>\n",
       "      <td>-0.355501</td>\n",
       "      <td>0.128069</td>\n",
       "      <td>-0.613808</td>\n",
       "      <td>0.695360</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>AGE</th>\n",
       "      <td>0.352734</td>\n",
       "      <td>-0.569537</td>\n",
       "      <td>0.644779</td>\n",
       "      <td>0.086518</td>\n",
       "      <td>0.731470</td>\n",
       "      <td>-0.240265</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.747881</td>\n",
       "      <td>0.456022</td>\n",
       "      <td>0.506456</td>\n",
       "      <td>0.261515</td>\n",
       "      <td>-0.273534</td>\n",
       "      <td>0.602339</td>\n",
       "      <td>-0.376955</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>DIS</th>\n",
       "      <td>-0.379670</td>\n",
       "      <td>0.664408</td>\n",
       "      <td>-0.708027</td>\n",
       "      <td>-0.099176</td>\n",
       "      <td>-0.769230</td>\n",
       "      <td>0.205246</td>\n",
       "      <td>-0.747881</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.494588</td>\n",
       "      <td>-0.534432</td>\n",
       "      <td>-0.232471</td>\n",
       "      <td>0.291512</td>\n",
       "      <td>-0.496996</td>\n",
       "      <td>0.249929</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RAD</th>\n",
       "      <td>0.625505</td>\n",
       "      <td>-0.311948</td>\n",
       "      <td>0.595129</td>\n",
       "      <td>-0.007368</td>\n",
       "      <td>0.611441</td>\n",
       "      <td>-0.209847</td>\n",
       "      <td>0.456022</td>\n",
       "      <td>-0.494588</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.910228</td>\n",
       "      <td>0.464741</td>\n",
       "      <td>-0.444413</td>\n",
       "      <td>0.488676</td>\n",
       "      <td>-0.381626</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>TAX</th>\n",
       "      <td>0.582764</td>\n",
       "      <td>-0.314563</td>\n",
       "      <td>0.720760</td>\n",
       "      <td>-0.035587</td>\n",
       "      <td>0.668023</td>\n",
       "      <td>-0.292048</td>\n",
       "      <td>0.506456</td>\n",
       "      <td>-0.534432</td>\n",
       "      <td>0.910228</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.460853</td>\n",
       "      <td>-0.441808</td>\n",
       "      <td>0.543993</td>\n",
       "      <td>-0.468536</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PTRATIO</th>\n",
       "      <td>0.289946</td>\n",
       "      <td>-0.391679</td>\n",
       "      <td>0.383248</td>\n",
       "      <td>-0.121515</td>\n",
       "      <td>0.188933</td>\n",
       "      <td>-0.355501</td>\n",
       "      <td>0.261515</td>\n",
       "      <td>-0.232471</td>\n",
       "      <td>0.464741</td>\n",
       "      <td>0.460853</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.177383</td>\n",
       "      <td>0.374044</td>\n",
       "      <td>-0.507787</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>-0.385064</td>\n",
       "      <td>0.175520</td>\n",
       "      <td>-0.356977</td>\n",
       "      <td>0.048788</td>\n",
       "      <td>-0.380051</td>\n",
       "      <td>0.128069</td>\n",
       "      <td>-0.273534</td>\n",
       "      <td>0.291512</td>\n",
       "      <td>-0.444413</td>\n",
       "      <td>-0.441808</td>\n",
       "      <td>-0.177383</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.366087</td>\n",
       "      <td>0.333461</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>LSTAT</th>\n",
       "      <td>0.455621</td>\n",
       "      <td>-0.412995</td>\n",
       "      <td>0.603800</td>\n",
       "      <td>-0.053929</td>\n",
       "      <td>0.590879</td>\n",
       "      <td>-0.613808</td>\n",
       "      <td>0.602339</td>\n",
       "      <td>-0.496996</td>\n",
       "      <td>0.488676</td>\n",
       "      <td>0.543993</td>\n",
       "      <td>0.374044</td>\n",
       "      <td>-0.366087</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.737663</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>price</th>\n",
       "      <td>-0.388305</td>\n",
       "      <td>0.360445</td>\n",
       "      <td>-0.483725</td>\n",
       "      <td>0.175260</td>\n",
       "      <td>-0.427321</td>\n",
       "      <td>0.695360</td>\n",
       "      <td>-0.376955</td>\n",
       "      <td>0.249929</td>\n",
       "      <td>-0.381626</td>\n",
       "      <td>-0.468536</td>\n",
       "      <td>-0.507787</td>\n",
       "      <td>0.333461</td>\n",
       "      <td>-0.737663</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             CRIM        ZN     INDUS      CHAS       NOX        RM       AGE  \\\n",
       "CRIM     1.000000 -0.200469  0.406583 -0.055892  0.420972 -0.219247  0.352734   \n",
       "ZN      -0.200469  1.000000 -0.533828 -0.042697 -0.516604  0.311991 -0.569537   \n",
       "INDUS    0.406583 -0.533828  1.000000  0.062938  0.763651 -0.391676  0.644779   \n",
       "CHAS    -0.055892 -0.042697  0.062938  1.000000  0.091203  0.091251  0.086518   \n",
       "NOX      0.420972 -0.516604  0.763651  0.091203  1.000000 -0.302188  0.731470   \n",
       "RM      -0.219247  0.311991 -0.391676  0.091251 -0.302188  1.000000 -0.240265   \n",
       "AGE      0.352734 -0.569537  0.644779  0.086518  0.731470 -0.240265  1.000000   \n",
       "DIS     -0.379670  0.664408 -0.708027 -0.099176 -0.769230  0.205246 -0.747881   \n",
       "RAD      0.625505 -0.311948  0.595129 -0.007368  0.611441 -0.209847  0.456022   \n",
       "TAX      0.582764 -0.314563  0.720760 -0.035587  0.668023 -0.292048  0.506456   \n",
       "PTRATIO  0.289946 -0.391679  0.383248 -0.121515  0.188933 -0.355501  0.261515   \n",
       "B       -0.385064  0.175520 -0.356977  0.048788 -0.380051  0.128069 -0.273534   \n",
       "LSTAT    0.455621 -0.412995  0.603800 -0.053929  0.590879 -0.613808  0.602339   \n",
       "price   -0.388305  0.360445 -0.483725  0.175260 -0.427321  0.695360 -0.376955   \n",
       "\n",
       "              DIS       RAD       TAX   PTRATIO         B     LSTAT     price  \n",
       "CRIM    -0.379670  0.625505  0.582764  0.289946 -0.385064  0.455621 -0.388305  \n",
       "ZN       0.664408 -0.311948 -0.314563 -0.391679  0.175520 -0.412995  0.360445  \n",
       "INDUS   -0.708027  0.595129  0.720760  0.383248 -0.356977  0.603800 -0.483725  \n",
       "CHAS    -0.099176 -0.007368 -0.035587 -0.121515  0.048788 -0.053929  0.175260  \n",
       "NOX     -0.769230  0.611441  0.668023  0.188933 -0.380051  0.590879 -0.427321  \n",
       "RM       0.205246 -0.209847 -0.292048 -0.355501  0.128069 -0.613808  0.695360  \n",
       "AGE     -0.747881  0.456022  0.506456  0.261515 -0.273534  0.602339 -0.376955  \n",
       "DIS      1.000000 -0.494588 -0.534432 -0.232471  0.291512 -0.496996  0.249929  \n",
       "RAD     -0.494588  1.000000  0.910228  0.464741 -0.444413  0.488676 -0.381626  \n",
       "TAX     -0.534432  0.910228  1.000000  0.460853 -0.441808  0.543993 -0.468536  \n",
       "PTRATIO -0.232471  0.464741  0.460853  1.000000 -0.177383  0.374044 -0.507787  \n",
       "B        0.291512 -0.444413 -0.441808 -0.177383  1.000000 -0.366087  0.333461  \n",
       "LSTAT   -0.496996  0.488676  0.543993  0.374044 -0.366087  1.000000 -0.737663  \n",
       "price    0.249929 -0.381626 -0.468536 -0.507787  0.333461 -0.737663  1.000000  "
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dataframe.corr()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "democratic-multimedia",
   "metadata": {},
   "outputs": [],
   "source": [
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "curious-oasis",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.heatmap(dataframe.corr(), annot=True, fmt=\".1f\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "wooden-trainer",
   "metadata": {},
   "source": [
    "### 如何依据房屋里面的卧室估计房子的面积"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "corporate-guinea",
   "metadata": {},
   "outputs": [],
   "source": [
    "x_rm = dataframe[\"RM\"].values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "protecting-undergraduate",
   "metadata": {},
   "outputs": [],
   "source": [
    "y_rm = dataframe[\"price\"].values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "inner-hampshire",
   "metadata": {},
   "outputs": [],
   "source": [
    "rm_to_price = {r:y for r, y in zip(x_rm, y_rm)}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "valued-rugby",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{6.575: 24.0,\n",
       " 6.421: 21.6,\n",
       " 7.185: 34.9,\n",
       " 6.998: 33.4,\n",
       " 7.147: 36.2,\n",
       " 6.43: 28.7,\n",
       " 6.012: 22.9,\n",
       " 6.172: 27.1,\n",
       " 5.631: 16.5,\n",
       " 6.004: 20.3,\n",
       " 6.377: 15.0,\n",
       " 6.009: 21.7,\n",
       " 5.889: 21.7,\n",
       " 5.949: 20.4,\n",
       " 6.096: 13.5,\n",
       " 5.834: 19.9,\n",
       " 5.935: 8.4,\n",
       " 5.99: 17.5,\n",
       " 5.456: 20.2,\n",
       " 5.727: 18.2,\n",
       " 5.57: 13.6,\n",
       " 5.965: 19.6,\n",
       " 6.142: 15.2,\n",
       " 5.813: 16.6,\n",
       " 5.924: 15.6,\n",
       " 5.599: 13.9,\n",
       " 6.047: 14.8,\n",
       " 6.495: 26.4,\n",
       " 6.674: 21.0,\n",
       " 5.713: 20.1,\n",
       " 6.072: 14.5,\n",
       " 5.95: 13.2,\n",
       " 5.701: 13.1,\n",
       " 5.933: 18.9,\n",
       " 5.841: 20.0,\n",
       " 5.85: 21.0,\n",
       " 5.966: 16.0,\n",
       " 6.595: 30.8,\n",
       " 7.024: 34.9,\n",
       " 6.77: 26.6,\n",
       " 6.169: 25.3,\n",
       " 6.211: 25.0,\n",
       " 6.069: 21.2,\n",
       " 5.682: 19.3,\n",
       " 5.786: 20.0,\n",
       " 6.03: 11.9,\n",
       " 5.399: 14.4,\n",
       " 5.602: 19.4,\n",
       " 5.963: 19.7,\n",
       " 6.115: 20.5,\n",
       " 6.511: 25.0,\n",
       " 5.998: 23.4,\n",
       " 5.888: 23.3,\n",
       " 7.249: 35.4,\n",
       " 6.383: 24.7,\n",
       " 6.816: 31.6,\n",
       " 6.145: 23.3,\n",
       " 5.927: 19.6,\n",
       " 5.741: 18.7,\n",
       " 6.456: 22.2,\n",
       " 6.762: 25.0,\n",
       " 7.104: 33.0,\n",
       " 6.29: 23.5,\n",
       " 5.787: 19.4,\n",
       " 5.878: 22.0,\n",
       " 5.594: 17.4,\n",
       " 5.885: 20.9,\n",
       " 6.417: 13.0,\n",
       " 5.961: 20.5,\n",
       " 6.065: 22.8,\n",
       " 6.245: 23.4,\n",
       " 6.273: 24.1,\n",
       " 6.286: 21.4,\n",
       " 6.279: 20.0,\n",
       " 6.14: 20.8,\n",
       " 6.232: 21.2,\n",
       " 5.874: 20.3,\n",
       " 6.727: 27.5,\n",
       " 6.619: 23.9,\n",
       " 6.302: 24.8,\n",
       " 6.167: 19.9,\n",
       " 6.389: 23.9,\n",
       " 6.63: 27.9,\n",
       " 6.015: 22.5,\n",
       " 6.121: 22.2,\n",
       " 7.007: 23.6,\n",
       " 7.079: 28.7,\n",
       " 6.405: 12.5,\n",
       " 6.442: 22.9,\n",
       " 6.249: 20.6,\n",
       " 6.625: 28.4,\n",
       " 6.163: 21.4,\n",
       " 8.069: 38.7,\n",
       " 7.82: 45.4,\n",
       " 7.416: 33.2,\n",
       " 6.781: 26.5,\n",
       " 6.137: 19.3,\n",
       " 5.851: 19.5,\n",
       " 5.836: 19.5,\n",
       " 6.127: 22.7,\n",
       " 6.474: 19.8,\n",
       " 6.229: 21.4,\n",
       " 6.195: 21.7,\n",
       " 6.715: 22.8,\n",
       " 5.913: 18.8,\n",
       " 6.092: 18.7,\n",
       " 6.254: 18.5,\n",
       " 5.928: 18.3,\n",
       " 6.176: 21.2,\n",
       " 6.021: 19.2,\n",
       " 5.872: 20.4,\n",
       " 5.731: 19.3,\n",
       " 5.87: 22.0,\n",
       " 5.856: 21.1,\n",
       " 5.879: 18.8,\n",
       " 5.986: 21.4,\n",
       " 5.613: 15.7,\n",
       " 5.693: 16.2,\n",
       " 6.431: 24.6,\n",
       " 5.637: 14.3,\n",
       " 6.458: 19.2,\n",
       " 6.326: 24.4,\n",
       " 6.372: 23.0,\n",
       " 5.822: 18.4,\n",
       " 5.757: 15.0,\n",
       " 6.335: 18.1,\n",
       " 5.942: 17.4,\n",
       " 6.454: 17.1,\n",
       " 5.857: 13.3,\n",
       " 6.151: 17.8,\n",
       " 6.174: 14.0,\n",
       " 5.019: 14.4,\n",
       " 5.403: 13.4,\n",
       " 5.468: 15.6,\n",
       " 4.903: 11.8,\n",
       " 6.13: 13.8,\n",
       " 5.628: 15.6,\n",
       " 4.926: 14.6,\n",
       " 5.186: 17.8,\n",
       " 5.597: 15.4,\n",
       " 6.122: 22.1,\n",
       " 5.404: 19.3,\n",
       " 5.012: 15.3,\n",
       " 5.709: 19.4,\n",
       " 6.129: 17.0,\n",
       " 6.152: 8.7,\n",
       " 5.272: 13.1,\n",
       " 6.943: 41.3,\n",
       " 6.066: 24.3,\n",
       " 6.51: 23.3,\n",
       " 6.25: 27.0,\n",
       " 7.489: 50.0,\n",
       " 7.802: 50.0,\n",
       " 8.375: 50.0,\n",
       " 5.854: 10.8,\n",
       " 6.101: 25.0,\n",
       " 7.929: 50.0,\n",
       " 5.877: 23.8,\n",
       " 6.319: 23.8,\n",
       " 6.402: 22.3,\n",
       " 5.875: 50.0,\n",
       " 5.88: 19.1,\n",
       " 5.572: 23.1,\n",
       " 6.416: 23.6,\n",
       " 5.859: 22.6,\n",
       " 6.546: 29.4,\n",
       " 6.02: 23.2,\n",
       " 6.315: 22.3,\n",
       " 6.86: 29.9,\n",
       " 6.98: 29.8,\n",
       " 7.765: 39.8,\n",
       " 6.144: 19.8,\n",
       " 7.155: 37.9,\n",
       " 6.563: 32.5,\n",
       " 5.604: 26.4,\n",
       " 6.153: 29.6,\n",
       " 7.831: 50.0,\n",
       " 6.782: 7.5,\n",
       " 6.556: 29.8,\n",
       " 6.951: 26.7,\n",
       " 6.739: 30.5,\n",
       " 7.178: 36.4,\n",
       " 6.8: 31.1,\n",
       " 6.604: 29.1,\n",
       " 7.875: 50.0,\n",
       " 7.287: 33.3,\n",
       " 7.107: 30.3,\n",
       " 7.274: 34.6,\n",
       " 6.975: 34.9,\n",
       " 7.135: 32.9,\n",
       " 6.162: 13.3,\n",
       " 7.61: 42.3,\n",
       " 7.853: 48.5,\n",
       " 8.034: 50.0,\n",
       " 5.891: 22.6,\n",
       " 5.783: 22.5,\n",
       " 6.064: 24.4,\n",
       " 5.344: 20.0,\n",
       " 5.96: 21.7,\n",
       " 5.807: 22.4,\n",
       " 6.375: 28.1,\n",
       " 5.412: 23.7,\n",
       " 6.182: 25.0,\n",
       " 6.642: 28.7,\n",
       " 5.951: 21.5,\n",
       " 6.373: 23.0,\n",
       " 6.164: 21.7,\n",
       " 6.879: 27.5,\n",
       " 6.618: 30.1,\n",
       " 8.266: 44.8,\n",
       " 8.725: 50.0,\n",
       " 8.04: 37.6,\n",
       " 7.163: 31.6,\n",
       " 7.686: 46.7,\n",
       " 6.552: 31.5,\n",
       " 5.981: 24.3,\n",
       " 7.412: 31.7,\n",
       " 8.337: 41.7,\n",
       " 8.247: 48.3,\n",
       " 6.726: 29.0,\n",
       " 6.086: 24.0,\n",
       " 6.631: 25.1,\n",
       " 7.358: 31.5,\n",
       " 6.481: 23.7,\n",
       " 6.606: 23.3,\n",
       " 6.897: 22.0,\n",
       " 6.095: 20.1,\n",
       " 6.358: 22.2,\n",
       " 6.393: 23.7,\n",
       " 5.593: 17.6,\n",
       " 5.605: 18.5,\n",
       " 6.108: 21.9,\n",
       " 6.226: 20.5,\n",
       " 6.433: 24.5,\n",
       " 6.718: 26.2,\n",
       " 6.487: 24.4,\n",
       " 6.438: 24.8,\n",
       " 6.957: 29.6,\n",
       " 8.259: 42.8,\n",
       " 5.876: 20.9,\n",
       " 7.454: 44.0,\n",
       " 8.704: 50.0,\n",
       " 7.333: 36.0,\n",
       " 6.842: 30.1,\n",
       " 7.203: 33.8,\n",
       " 7.52: 43.1,\n",
       " 8.398: 48.8,\n",
       " 7.327: 31.0,\n",
       " 7.206: 36.5,\n",
       " 5.56: 22.8,\n",
       " 7.014: 30.7,\n",
       " 8.297: 50.0,\n",
       " 7.47: 43.5,\n",
       " 5.92: 20.7,\n",
       " 6.24: 25.2,\n",
       " 6.538: 24.4,\n",
       " 7.691: 35.2,\n",
       " 6.758: 32.4,\n",
       " 6.854: 32.0,\n",
       " 7.267: 33.2,\n",
       " 6.826: 33.1,\n",
       " 6.482: 29.1,\n",
       " 6.812: 35.1,\n",
       " 6.968: 10.4,\n",
       " 7.645: 46.0,\n",
       " 7.923: 50.0,\n",
       " 7.088: 32.2,\n",
       " 6.453: 22.0,\n",
       " 6.23: 20.1,\n",
       " 6.209: 21.4,\n",
       " 6.565: 24.8,\n",
       " 6.861: 28.5,\n",
       " 7.148: 37.3,\n",
       " 6.678: 28.6,\n",
       " 6.549: 27.1,\n",
       " 5.79: 20.3,\n",
       " 6.345: 22.5,\n",
       " 7.041: 29.0,\n",
       " 6.871: 24.8,\n",
       " 6.59: 22.0,\n",
       " 6.982: 33.1,\n",
       " 7.236: 36.1,\n",
       " 6.616: 28.4,\n",
       " 7.42: 33.4,\n",
       " 6.849: 28.2,\n",
       " 6.635: 24.5,\n",
       " 5.972: 20.3,\n",
       " 4.973: 16.1,\n",
       " 6.023: 19.4,\n",
       " 6.266: 21.6,\n",
       " 6.567: 23.8,\n",
       " 5.705: 16.2,\n",
       " 5.914: 17.8,\n",
       " 5.782: 19.8,\n",
       " 6.382: 23.1,\n",
       " 6.113: 21.0,\n",
       " 6.426: 23.8,\n",
       " 6.376: 17.7,\n",
       " 6.041: 20.4,\n",
       " 5.708: 18.5,\n",
       " 6.415: 25.0,\n",
       " 6.312: 21.2,\n",
       " 6.083: 22.2,\n",
       " 5.868: 19.3,\n",
       " 6.333: 22.6,\n",
       " 5.706: 17.1,\n",
       " 6.031: 19.4,\n",
       " 6.316: 22.2,\n",
       " 6.31: 20.7,\n",
       " 6.037: 21.1,\n",
       " 5.869: 19.5,\n",
       " 5.895: 18.5,\n",
       " 6.059: 20.6,\n",
       " 5.985: 19.0,\n",
       " 5.968: 18.7,\n",
       " 7.241: 32.7,\n",
       " 6.54: 16.5,\n",
       " 6.696: 23.9,\n",
       " 6.874: 31.2,\n",
       " 6.014: 17.5,\n",
       " 5.898: 17.2,\n",
       " 6.516: 23.1,\n",
       " 6.939: 26.6,\n",
       " 6.49: 22.9,\n",
       " 6.579: 24.1,\n",
       " 5.884: 18.6,\n",
       " 6.728: 14.9,\n",
       " 5.663: 18.2,\n",
       " 5.936: 13.5,\n",
       " 6.212: 17.8,\n",
       " 6.395: 21.7,\n",
       " 6.112: 22.6,\n",
       " 6.398: 25.0,\n",
       " 6.251: 12.6,\n",
       " 5.362: 20.8,\n",
       " 5.803: 16.8,\n",
       " 8.78: 21.9,\n",
       " 3.561: 27.5,\n",
       " 4.963: 21.9,\n",
       " 3.863: 23.1,\n",
       " 4.97: 50.0,\n",
       " 6.683: 50.0,\n",
       " 7.016: 50.0,\n",
       " 6.216: 50.0,\n",
       " 4.906: 13.8,\n",
       " 4.138: 11.9,\n",
       " 7.313: 15.0,\n",
       " 6.649: 13.9,\n",
       " 6.794: 22.0,\n",
       " 6.38: 9.5,\n",
       " 6.223: 10.2,\n",
       " 6.545: 10.9,\n",
       " 5.536: 11.3,\n",
       " 5.52: 12.3,\n",
       " 4.368: 8.8,\n",
       " 5.277: 7.2,\n",
       " 4.652: 10.5,\n",
       " 5.0: 7.4,\n",
       " 4.88: 10.2,\n",
       " 5.39: 19.7,\n",
       " 6.051: 23.2,\n",
       " 5.036: 9.7,\n",
       " 6.193: 11.0,\n",
       " 5.887: 12.7,\n",
       " 6.471: 13.1,\n",
       " 5.747: 8.5,\n",
       " 5.453: 5.0,\n",
       " 5.852: 6.3,\n",
       " 5.987: 5.6,\n",
       " 6.343: 7.2,\n",
       " 6.404: 12.1,\n",
       " 5.349: 8.3,\n",
       " 5.531: 8.5,\n",
       " 5.683: 5.0,\n",
       " 5.608: 27.9,\n",
       " 5.617: 17.2,\n",
       " 6.852: 27.5,\n",
       " 6.657: 17.2,\n",
       " 4.628: 17.9,\n",
       " 5.155: 16.3,\n",
       " 4.519: 7.0,\n",
       " 6.434: 7.2,\n",
       " 5.304: 12.0,\n",
       " 5.957: 8.8,\n",
       " 6.824: 8.4,\n",
       " 6.411: 16.7,\n",
       " 6.006: 14.2,\n",
       " 5.648: 20.8,\n",
       " 6.103: 13.4,\n",
       " 5.565: 11.7,\n",
       " 5.896: 8.3,\n",
       " 5.837: 10.2,\n",
       " 6.202: 10.9,\n",
       " 6.348: 14.5,\n",
       " 6.833: 14.1,\n",
       " 6.425: 16.1,\n",
       " 6.436: 14.3,\n",
       " 6.208: 11.7,\n",
       " 6.629: 13.4,\n",
       " 6.461: 9.6,\n",
       " 5.627: 12.8,\n",
       " 5.818: 10.5,\n",
       " 6.406: 17.1,\n",
       " 6.219: 18.4,\n",
       " 6.485: 15.4,\n",
       " 6.459: 11.8,\n",
       " 6.341: 14.9,\n",
       " 6.185: 14.6,\n",
       " 6.749: 13.4,\n",
       " 6.655: 15.2,\n",
       " 6.297: 16.1,\n",
       " 7.393: 17.8,\n",
       " 6.525: 14.1,\n",
       " 5.976: 12.7,\n",
       " 6.301: 14.9,\n",
       " 6.081: 20.0,\n",
       " 6.701: 16.4,\n",
       " 6.317: 19.5,\n",
       " 6.513: 20.2,\n",
       " 5.759: 19.9,\n",
       " 5.952: 19.0,\n",
       " 6.003: 19.1,\n",
       " 5.926: 24.5,\n",
       " 6.437: 23.2,\n",
       " 5.427: 13.8,\n",
       " 6.484: 16.7,\n",
       " 6.242: 23.0,\n",
       " 6.75: 23.7,\n",
       " 7.061: 25.0,\n",
       " 5.762: 21.8,\n",
       " 5.871: 20.6,\n",
       " 6.114: 19.1,\n",
       " 5.905: 20.6,\n",
       " 5.454: 15.2,\n",
       " 5.414: 7.0,\n",
       " 5.093: 8.1,\n",
       " 5.983: 20.1,\n",
       " 5.707: 21.8,\n",
       " 5.67: 23.1,\n",
       " 5.794: 18.3,\n",
       " 6.019: 21.2,\n",
       " 5.569: 17.5,\n",
       " 6.027: 16.8,\n",
       " 6.593: 22.4,\n",
       " 6.12: 20.6,\n",
       " 6.976: 23.9}"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rm_to_price"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "downtown-economy",
   "metadata": {},
   "outputs": [],
   "source": [
    "def KNN(history_price, query_x, topn=3):\n",
    "    most_similar_items = sorted(history_price.items(), key=lambda x_y: (x_y[0] - query_x)**2)[:topn]\n",
    "    most_similar_prices = [price for rm, price in most_similar_items]\n",
    "    return np.mean(most_similar_prices)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "sorted-float",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "14.6"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "KNN(rm_to_price, 4, topn=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "three-disorder",
   "metadata": {},
   "source": [
    "## 3、回归\n",
    "寻找自变量与因变量之间的函数关系"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "demonstrated-george",
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "chicken-outside",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x221d2055518>"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x_rm, y_rm)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "proof-integrity",
   "metadata": {},
   "source": [
    "### 如何评价寻找的模型的性能表现？一般我们会设计损失函数，查看信息量的损失"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "limited-italic",
   "metadata": {},
   "source": [
    "## 4、Loss函数"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "sized-extreme",
   "metadata": {},
   "source": [
    "### MSE:均方误差（Mean Squared Error）"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "correct-mitchell",
   "metadata": {},
   "source": [
    "$$\n",
    "Loss\\left ( y - \\hat{y} \\right )=\\frac{1}{N}\\sum_{i\\in N}\\left ( y_{i} - \\hat{y_{i}}\\right )^{2}\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "instrumental-truth",
   "metadata": {},
   "outputs": [],
   "source": [
    "def loss(y, yhat):\n",
    "    return np.mean((np.array(y) - np.array(yhat))**2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "typical-smell",
   "metadata": {},
   "outputs": [],
   "source": [
    "y_real = [3,5, 9]\n",
    "yhat1 = [3, 4,7]\n",
    "yhat2 = [3,6,9]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "future-password",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.6666666666666667"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "loss(y_real, yhat1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "adopted-creature",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.3333333333333333"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "loss(y_real, yhat2)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dominican-editor",
   "metadata": {},
   "source": [
    "### 寻找最优参数的方法\n",
    "* 1.最开始我们直接使用微积分的方法做计算\n",
    "* 2.现在随机模拟的方法来做"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bored-present",
   "metadata": {},
   "source": [
    "### 随机模拟"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "gross-flush",
   "metadata": {},
   "outputs": [],
   "source": [
    "import random"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "stylish-weekend",
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "total_times = 2000"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "id": "standing-wales",
   "metadata": {},
   "outputs": [],
   "source": [
    "def model(x, k, b):\n",
    "    return k * x + b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "id": "swiss-trace",
   "metadata": {},
   "outputs": [],
   "source": [
    "def magnitude(x):\n",
    "    if x < 10:\n",
    "        return 1\n",
    "    return magnitude(x / 10) + 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "id": "empirical-collaboration",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "k=11\tb=4 \tloss:47.908237\n",
      "Wall time: 40 ms\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(7, -20)"
      ]
     },
     "execution_count": 112,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%%time\n",
    "def stochastic_simulation(total_times):\n",
    "    var_max, var_min = 20, -20\n",
    "    min_loss = float(\"INF\")\n",
    "    mt = magnitude(total_times)\n",
    "\n",
    "    for t in range(total_times):\n",
    "        k, b = random.randint(var_min, var_max), random.randint(var_min, var_max)\n",
    "        loss_ = loss(y_rm, model(x_rm, k, b))\n",
    "        if loss_ < min_loss:\n",
    "            min_loss = loss_\n",
    "            best_k, best_b = k, b\n",
    "            # print(f\"epoch:{t:0{mt}d}/{total_times}\\t得到局部最优解  k={k}\\tb={b} \\tloss:{min_loss:.8g}\")\n",
    "    print(f\"k={k}\\tb={b} \\tloss:{min_loss:.8g}\")\n",
    "    return best_k, best_b\n",
    "\n",
    "\n",
    "stochastic_simulation(total_times)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ruled-faith",
   "metadata": {},
   "source": [
    "<font color=\"red\">上面的结果显示，优化的速率越来越慢，也即算法找到更优的解越来越难</font>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "together-denver",
   "metadata": {},
   "source": [
    "## 5、梯度下降"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "talented-citation",
   "metadata": {},
   "source": [
    "> **参数k的偏导数**\n",
    "\n",
    "$$\n",
    "\\begin{equation}\n",
    "    \\begin{aligned}\n",
    "        \\frac{\\partial Loss\\left ( y - \\hat{y} \\right )}{\\partial k}&=\\frac{\\partial \\frac{1}{N}\\sum_{i\\in N}\\left ( y_{i} - \\left (  k\\times x_{i} + b \\right )\\right )^{2}}{\\partial k}\\\\\n",
    "        &=\\frac{2}{N}\\sum_{i\\in N}\\left ( y_{i} - \\left (  k\\times x_{i} + b \\right )\\right )(-x_{i}),\n",
    "    \\end{aligned}\n",
    "\\end{equation}\n",
    "$$\n",
    "\n",
    "> **参数b的偏导数**\n",
    "\n",
    "$$\n",
    "\\begin{equation}\n",
    "    \\begin{aligned}\n",
    "        \\frac{\\partial Loss\\left ( y - \\hat{y} \\right )}{\\partial b}&=\\frac{\\partial \\frac{1}{N}\\sum_{i\\in N}\\left ( y_{i} - \\left (  k\\times x_{i} + b \\right )\\right )^{2}}{\\partial b}\\\\\n",
    "        &=\\frac{2}{N}\\sum_{i\\in N}\\left ( y_{i} - \\left (  k\\times x_{i} + b \\right )\\right )(-1),\n",
    "    \\end{aligned}\n",
    "\\end{equation}\n",
    "$$\n",
    "\n",
    "> **参数的更新策略**\n",
    "\n",
    "$$\n",
    "\\begin{equation}\n",
    "    \\begin{aligned}\n",
    "        k_{n+1} = k_{n} + -1\\times \\frac{\\partial L}{\\partial k}\\times \\alpha \\\\\n",
    "        b_{n+1} = b_{n} + -1\\times \\frac{\\partial L}{\\partial b}\\times \\alpha\n",
    "    \\end{aligned}\n",
    "\\end{equation}\n",
    "$$\n",
    "* $\\alpha$为学习率，这里我们可以动态调整学习率！"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "id": "liquid-sustainability",
   "metadata": {},
   "outputs": [],
   "source": [
    "def partial_k(x, y, k_n, b_n):\n",
    "    return 2 * np.mean((k_n * x + b_n - y) * x)\n",
    "\n",
    "def partial_b(x, y, k_n, b_n):\n",
    "    return 2 * np.mean(k_n * x + b_n - y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "obvious-rhythm",
   "metadata": {},
   "outputs": [],
   "source": [
    "init_k_b = random.randint(var_min, var_max), random.randint(var_min, var_max)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "id": "downtown-cricket",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 使用梯度下降求解参数\n",
    "min_loss = float(\"INF\")\n",
    "# 先随机初始化参数\n",
    "k, b = init_k_b\n",
    "# 初始化学习率\n",
    "alpha = 2*1e-2\n",
    "total_times = 2000\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "id": "fixed-interstate",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "k=9.10206159306408\tb=-34.67031933867574 \tloss:43.600552\n",
      "Wall time: 103 ms\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "mt = magnitude(total_times)\n",
    "\n",
    "for t in range(total_times):\n",
    "    # 相对于神经网络里面的反向传播过程\n",
    "    k = k - partial_k(x_rm, y_rm, k, b) * alpha\n",
    "    b = b - partial_b(x_rm, y_rm, k, b) * alpha\n",
    "    # 参数更新后，计算新一轮的预测、误差\n",
    "    loss_ = loss(y_rm, model(x_rm, k, b))\n",
    "    if loss_ < min_loss:\n",
    "        min_loss = loss_\n",
    "        #print(f\"epoch:{t:0{mt}d}/{total_times}\\t得到局部最优解  k={k}\\tb={b} \\tloss:{min_loss:.8g}\")\n",
    "print(f\"k={k}\\tb={b} \\tloss:{min_loss:.8g}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "compliant-airport",
   "metadata": {},
   "source": [
    "这一步我们可以尝试不同的学习率，当使用 $alpha=10^{-3}$  时，迭代1000个epoch后还没有随机模拟的效果好，当我们设置 $alpha=10^{-2}$  时，效果明显优于随机模拟的效果。\n",
    "<font color=\"red\">所以学习率的设置对参数的收敛速率影响非常大！多次实验我们还会发现初始化对于参数收敛的影响非常大，下面我们给学习率一个动态的调整，调整策略为根据梯度的模长调整学习率的大小</font>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "focused-radius",
   "metadata": {},
   "source": [
    "### 调整学习率\n",
    "<font color=\"red\">梯度很小时，理论上离局部最小值就很近了，此时我们需要使用较小的学习率，相反我们需要较大的学习率</font>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "id": "referenced-personality",
   "metadata": {},
   "outputs": [],
   "source": [
    "gradient_length = 0\n",
    "def learning_rate(gradient, alpha):\n",
    "    global gradient_length\n",
    "    if np.linalg.norm(gradient) < 0.1 and alpha > 1e-3:\n",
    "        alpha = alpha * 0.95\n",
    "    return alpha"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 142,
   "id": "governing-start",
   "metadata": {},
   "outputs": [],
   "source": [
    "min_loss = float(\"INF\")\n",
    "# 先随机初始化参数\n",
    "k, b = init_k_b\n",
    "# 初始化学习率\n",
    "alpha = 0.01\n",
    "\n",
    "mt = magnitude(total_times)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 153,
   "id": "surface-cornell",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "k=9.04129745988521\tb=-34.28379151313224 \tloss:43.602395\n",
      "Wall time: 978 ms\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "update = True\n",
    "for t in range(20000):\n",
    "    # 相对于神经网络里面的反向传播过程\n",
    "    gradient = [partial_k(x_rm, y_rm, k, b), partial_b(x_rm, y_rm, k, b)]\n",
    "    k = k - gradient[0] * alpha\n",
    "    b = b - gradient[1] * alpha\n",
    "    # 参数更新后，计算新一轮的预测、误差\n",
    "    loss_ = loss(y_rm, model(x_rm, k, b))\n",
    "    if loss_ < min_loss:\n",
    "        min_loss = loss_\n",
    "        best_k, best_b = k, b\n",
    "        # print(f\"epoch:{t:0{mt}d}/{total_times}\\t得到局部最优解  k={k}\\tb={b} \\tloss:{min_loss:.8g}\")\n",
    "    # 更新学习率\n",
    "    if np.abs(loss_ - min_loss) < 0.001 and update:\n",
    "        alpha *= 0.5\n",
    "        update = False\n",
    "print(f\"k={k}\\tb={b} \\tloss:{min_loss:.8g}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "id": "spanish-salem",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 5,  8, 11, 14])"
      ]
     },
     "execution_count": 126,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model(np.array([1,2,3,4]), 3, 2)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "compatible-auditor",
   "metadata": {},
   "source": [
    "## 使用sklearn进行回归分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 154,
   "id": "literary-beach",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LinearRegression\n",
    "slr = LinearRegression()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 155,
   "id": "spatial-driver",
   "metadata": {},
   "outputs": [],
   "source": [
    "x_rm = x_rm.reshape(-1,1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 156,
   "id": "retained-chassis",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(506, 1)"
      ]
     },
     "execution_count": 156,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_rm.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 157,
   "id": "latest-corps",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "43.60055177116956\n"
     ]
    }
   ],
   "source": [
    "slr.fit(x_rm, y_rm)\n",
    "y_hat = slr.predict(x_rm)\n",
    "loss_lr = loss(y_rm, y_hat)\n",
    "print(loss_lr)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 158,
   "id": "center-building",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x221d2ed5cc0>]"
      ]
     },
     "execution_count": 158,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(y_hat - y_rm)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "guilty-radar",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
